Poniższa analiza dotyczy parametrów samochodów osobowych, wystawionych na sprzedaż za pośrednictwem portalu internetowego otomoto.pl z okolic Lublina (w promieniu 50 km).
Informacje o samochodach zostały pobrane ze strony za pomocą osobnego skryptu napisanego w R:
otomoto_scraping.R (Opis działania skryptu)
Analiza parametrów samochodów osobowych może obejmować wiele różnych czynników, w zależności od tego, jakie kryteria są ważne dla konkretnego klienta. Przykłady parametrów, które mogą być brane pod uwagę, to m.in. moc silnika, pojemność skokowa, rodzaj paliwa, wielkość i typ nadwozia, wyposażenie, przestronność wnętrza, bezpieczeństwo i wygodę. Parametry te mogą być również porównywane między różnymi modelami samochodów, aby uzyskać informacje na temat ich wydajności, jakości i kosztów eksploatacji. Analiza parametrów samochodów osobowych może być używana do określenia najlepszej oferty cenowej w stosunku do określonych wymagań klienta.
Baza danych zawiera następujące parametry:
id - wybrany przez nas indywidualny numer pojazdu
Marka_pojazdu
Model_pojazdu
Rok_produkcji
Przebieg - liczba przejechanych kilometrów
Pojemność skokowa:
gdzie:
\(d\) - średnica cylindra
\(s\) - skok tłoka
\(n\) - liczba cylindów
Rodzaj_paliwa:
Samochody osobowe mogą pracować na różnych rodzajach paliw. Najbardziej popularnyme dla samochodów osobowych to benzyna, diesel, gaz ziemny, napęd hybrydowy i energia elektryczna.
Benzyna jest paliwem zawierającym zwykle około 85% węglowodorów i jest używana do napędzania większości samochodów osobowych. Jest to jedno z najtańszych paliw dostępnych na rynku, a do tego jest łatwo dostępne. Jednakże jest ona również bardzo szkodliwa dla środowiska, ponieważ wytwarza duże ilości dwutlenku węgla, tlenków azotu i innych zanieczyszczeń.
Diesel to aktualnie najpopularniejszy rdzaj paliw stosowanych w samochodach osobowych. Jest ono wysoce wydajne i ekonomiczne, dlatego zyskuje popularność wśród tych, którzy szukają oszczędności. Jednak w porównaniu z benzyną, diesel wytwarza więcej tlenków azotu i innych zanieczyszczeń, które są szkodliwe dla środowiska.
Gaz ziemny (LPG) jest jednym z najbardziej ekologicznych paliw stosowanych w samochodach osobowych. Wytwarzany z naturalnych i odnawialnych źródeł, takich jak metan i węgiel. Jego wytwarzanie wytwarza mniej dwutlenku węgla i innych zanieczyszczeń niż benzyna lub diesel.
Napęd hybrydowy jest połączeniem benzyny i energii elektrycznej. Samochody hybrydowe wykorzystują silnik spalinowy do napędzania samochodu, ale również wykorzystują silnik elektryczny, aby wspierać pracę silnika spalinowego i zwiększyć wydajność.
Energia elektryczna jest coraz popularniejszym paliwem w samochodach osobowych. Samochody elektryczne nie wytwarzają żadnych szkodliwych zanieczyszczeń, co czyni je znacznie przyjazniejszymi dla środowiska. Jednak samochody elektryczne są zazwyczaj droższe od samochodów na benzynę lub diesel, a także mają ograniczone zasięgi.
Moc :
Parametr wyrażony w koniach mechanicznych (KM), oznaczający pracę, jaką jest w stanie wykonać silnik w określonym czasie. Im wyższa jest moc, tym krótszy będzie czas potrzebny do np. rozpędzenia auta. Maksymalna moc wynika z momentu obrotowego oraz prędkości obrotowej silnika i również jest osiągana w określonych warunkach, przeważnie w górnej skali obrotów.
Typ_nadwozia:
Typy nadwozia samochodów osobowych obejmują:
Sedan: Najbardziej popularny typ samochodu osobowego, charakteryzujący się czterema drzwiami i kontuarem.
Kombi: Jest to samochód osobowy ze względu na swoją elastyczność i przestronność. Zazwyczaj ma cztery drzwi, kontur i szerokie tylne siedzenia.
Hatchback(auta miejskie): Samochód osobowy z drzwiami tylnymi i konturem. Jest to wygodny wybór dla osób, które często transportują duże ilości bagażu.
Coupe: składa się z dwóch lub trzech drzwi z zazwyczaj zmniejszoną liczbą siedzeń w porównaniu z tradycyjnym sedanem. Charakteryzuje się długim, płaskim dachem i zazwyczaj zwężonym tyłem. Coupe zazwyczaj występuje w wersji sportowej i oferuje wyższą wydajność i więcej mocy niż sedan.
Kabriolet: Samochód osobowy z dachem składanym. Jest to wybór idealny dla osób, które chcą cieszyć się jazdą na otwartym powietrzu.
SUV: Składa się z czterech drzwi, dwóch lub trzech rzędów siedzeń, a także zazwyczaj znacznie większego przestrzeni bagażowej niż w zwykłym sedanie. SUV-y często mają wyższy prześwit niż sedan, co pozwala im na wjazd w tereny trudniej dostępne. SUV-y są zazwyczaj bardziej wytrzymałe i mają większą moc niż zwykłe samochody osobowe.
Minivan: Samochód osobowy z dużą przestrzenią w kabinie, który jest idealny dla rodzin z dziećmi.
Kompakt: Mały samochód osobowy z dużym bagażnikiem, który jest wyposażony w cztery drzwi i kontur. Jest to idealny wybór dla osób, które szukają oszczędności paliwa i mniejszych rozmiarów.
Auta małe: Bardzo mały samochód osobowy, który jest wyposażony w dwie lub cztery drzwi i kontur. Jest to wybór idealny dla osób, które szukają oszczędności paliwa i mniejszych rozmiarów.
Kolor
Kolor samochodu może być jednym z ważniejszych wyznaczników jego wyglądu. Odcień lakieru może wpływać na to, jak samochód jest postrzegany przez innych. Niektórzy uważają, że kolor samochodu może nawet wpływać na to, jak czują się za jego kierownicą.
Kolory samochodów są często związane z określonymi osobowościami. Na przykład, czerwony jest postrzegany jako kolor ekscytujący i dynamiczny, a czarny jest postrzegany jako kolor luksusowy i elegancki.
Cena
library(rio)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ purrr::%||%() masks base::%||%()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(knitr)
autka <- import(file="otomoto.csv")
head(autka)|>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Volkswagen | Polo | 2008 | 181 000 km | 1 390 cm3 | Benzyna | 80 KM | Auta miejskie | Czarny | 15999 |
| 2 | Kia | Ceed | 2008 | 179 000 km | 1 582 cm3 | Diesel | 115 KM | Kombi | Szary | 13500 |
| 3 | Toyota | Land Cruiser | 2022 | 2 000 km | 2 755 cm3 | Diesel | 204 KM | SUV | Beżowy | 287000 |
| 4 | Fiat | 500X | 2015 | 89 024 km | 1 368 cm3 | Benzyna | 140 KM | Auta miejskie | Inny kolor | 62730 |
| 5 | Toyota | Prius | 2009 | 289 820 km | 1 798 cm3 | Hybryda | 99 KM | Kompakt | Szary | 40500 |
| 6 | Ford | S-Max | 2007 | 345 000 km | 1 753 cm3 | Diesel | 125 KM | Minivan | Srebrny | 17600 |
Jeżeli w procesie pobierania danych ze strony, jakiś parametr nie został wczytany, wtedy w jego miejsce zostaje zapisana wartość następnego parametru. Oznacza to, że w przypadku pojawienia się braków, ostatnia kolumna (Cena) będzie przyjmować wartość “NA”.
autka[is.na(autka$Cena)==T,] |>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 585 | 585 | Renault | Zoe | 2017 | 60 000 km | Elektryczny | 40 KM | Kompakt | Biały | 21900 | NA |
| 1000 | 1000 | Mercedes-Benz | EQC | 2022 | Elektryczny | 408 KM | SUV | Szary | 391288 | NA | NA |
| 1001 | 1001 | Mercedes-Benz | EQS | 2022 | Elektryczny | 523 KM | Kompakt | Czarny | 783564 | NA | NA |
Braki pojawiają się dla samochodów o indeksach: 585, 1000, oraz 1001. Uwagę przykuwa fakt, że są to wyłącznie samochody elektryczne. Sprawdzmy więc dodatkowo, czy to wszystkie samochody elektryczne z bazy.
elektryczne <- NULL
for(i in 1:dim(autka)[1]){
for(j in 1:dim(autka)[2]){
if(is.na(autka[i,j])==F) {
if(autka[i,j]=="Elektryczny") {
elektryczne <- append(elektryczne,i)
}
}
}
}
autka[elektryczne,] |>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 585 | 585 | Renault | Zoe | 2017 | 60 000 km | Elektryczny | 40 KM | Kompakt | Biały | 21900 | NA |
| 1000 | 1000 | Mercedes-Benz | EQC | 2022 | Elektryczny | 408 KM | SUV | Szary | 391288 | NA | NA |
| 1001 | 1001 | Mercedes-Benz | EQS | 2022 | Elektryczny | 523 KM | Kompakt | Czarny | 783564 | NA | NA |
Zgadza się. Tylko samochody elektryczne generują problemy z wczytywaniem danych, ponieważ nie posiadają takiego parametru jak Pojemość skokowa (przypiszmy im więc wartość 0). Dodatkowo, dla samochodów o indeksach 1000 oraz 1001 nie został wczytany parametr przebieg, może to być spowodowane tym, że są to nowe samochody, które nie przejechały jeszcze żadnej trasy. W tym przypadku również przypisujemy 0. Rodzaj paliwa uzupełniamy jako Elektryczny, a pozostałe wartości parametrów umieszczamy we właściwych kolumnach.
autka[elektryczne[1],7:11] <- autka[elektryczne[1],6:10]
autka[elektryczne[2:3],7:11] <- autka[elektryczne[2:3],5:9]
autka[elektryczne[2:3],5] <- 0
autka[elektryczne[1:3],6] <- 0
autka[elektryczne,] |>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 585 | 585 | Renault | Zoe | 2017 | 60 000 km | 0 | Elektryczny | 40 KM | Kompakt | Biały | 21900 |
| 1000 | 1000 | Mercedes-Benz | EQC | 2022 | 0 | 0 | Elektryczny | 408 KM | SUV | Szary | 391288 |
| 1001 | 1001 | Mercedes-Benz | EQS | 2022 | 0 | 0 | Elektryczny | 523 KM | Kompakt | Czarny | 783564 |
Tworzymy ramkę danych z poprawionej bazy danych:
autka_dt <- data.frame(autka)
summary(autka_dt)
## id Marka_pojazdu Model_pojazdu Rok_produkcji
## Min. : 1.0 Length:1248 Length:1248 Min. :1961
## 1st Qu.: 312.8 Class :character Class :character 1st Qu.:2007
## Median : 624.5 Mode :character Mode :character Median :2012
## Mean : 624.5 Mean :2011
## 3rd Qu.: 936.2 3rd Qu.:2016
## Max. :1248.0 Max. :2023
## Przebieg Pojemność_skokowa Rodzaj_paliwa Moc
## Length:1248 Length:1248 Length:1248 Length:1248
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Typ_nadwozia Kolor Cena
## Length:1248 Length:1248 Length:1248
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
Parametry: Marka_pojazdu, Model pojazdu, Rodzaj, Paliwa, Typ_nadwozia oraz Kolor ustawiamy na typ kategoryczny (factor).
autka_dt$Marka_pojazdu <- as.factor(autka$Marka_pojazdu)
autka_dt$Model_pojazdu <- as.factor(autka$Model_pojazdu)
autka_dt$Kolor <- as.factor(autka$Kolor)
autka_dt$Typ_nadwozia <- as.factor(autka$Typ_nadwozia)
autka_dt$Rodzaj_paliwa <- as.factor(autka$Rodzaj_paliwa)
Parametry takie jak: Przebieg,Pojemnosc,skokowa,Moc oraz Cena ustawiamy jako typ ilościowy (numeric).
autka_dt$Przebieg <- parse_number(gsub(" ","",autka_dt$Przebieg))
autka_dt$Pojemność_skokowa<- parse_number(gsub(" ","",autka_dt$Pojemność_skokowa))
autka_dt$Moc <- parse_number(gsub(" ","",autka_dt$Moc))
autka_dt$Cena <- parse_number(gsub(" ","",autka_dt$Cena))
summary(autka_dt)
## id Marka_pojazdu Model_pojazdu Rok_produkcji
## Min. : 1.0 BMW :108 A4 : 30 Min. :1961
## 1st Qu.: 312.8 Audi : 96 Seria 3: 29 1st Qu.:2007
## Median : 624.5 Volvo : 85 Seria 5: 24 Median :2012
## Mean : 624.5 Volkswagen: 81 Passat : 22 Mean :2011
## 3rd Qu.: 936.2 Opel : 80 Focus : 21 3rd Qu.:2016
## Max. :1248.0 Renault : 80 Megane : 20 Max. :2023
## (Other) :718 (Other):1102
## Przebieg Pojemność_skokowa Rodzaj_paliwa Moc
## Min. : 0 Min. : 0 Benzyna :572 Min. : 30.0
## 1st Qu.: 102020 1st Qu.:1560 Benzyna+LPG: 97 1st Qu.:110.0
## Median : 176000 Median :1896 Diesel :544 Median :136.0
## Mean : 172701 Mean :1933 Elektryczny: 3 Mean :153.9
## 3rd Qu.: 237350 3rd Qu.:1997 Hybryda : 32 3rd Qu.:174.2
## Max. :2230000 Max. :6208 Max. :612.0
##
## Typ_nadwozia Kolor Cena
## SUV :312 Czarny :301 Min. : 1999
## Kombi :243 Szary :203 1st Qu.: 19700
## Sedan :200 Srebrny :181 Median : 36900
## Kompakt :193 Biały :169 Mean : 59409
## Minivan :125 Niebieski: 86 3rd Qu.: 63346
## Auta miejskie:110 Granatowy: 54 Max. :1626016
## (Other) : 65 (Other) :254
Przyjżyjmy się teraz podstawowym statystykom opisowym poszczególnych zmiennych.
autka_Marki <- autka_dt|>
count(Marka_pojazdu) |>
data.frame()
colnames(autka_Marki)[2] <- "Liczba_aut"
#posortowane malejąco względem liczby aut
autka_Marki_sort <- autka_Marki[order(autka_Marki$Liczba_aut, decreasing=T), ]
# %
autka_Marki_sort_procent <- round((autka_Marki_sort$Liczba_aut*100)/dim(autka_dt)[1],2)
cbind(autka_Marki_sort,autka_Marki_sort_procent)|>
kable(caption = "Liczba aut poszczególnych marek samochodów (malejąco)",
col.names = c("Marka","liczba aut","% "))
| Marka | liczba aut | % | |
|---|---|---|---|
| 3 | BMW | 108 | 8.65 |
| 2 | Audi | 96 | 7.69 |
| 43 | Volvo | 85 | 6.81 |
| 42 | Volkswagen | 81 | 6.49 |
| 30 | Opel | 80 | 6.41 |
| 33 | Renault | 80 | 6.41 |
| 13 | Ford | 77 | 6.17 |
| 41 | Toyota | 64 | 5.13 |
| 26 | Mercedes-Benz | 55 | 4.41 |
| 7 | Citroën | 49 | 3.93 |
| 15 | Hyundai | 48 | 3.85 |
| 31 | Peugeot | 43 | 3.45 |
| 19 | Kia | 39 | 3.12 |
| 14 | Honda | 33 | 2.64 |
| 29 | Nissan | 32 | 2.56 |
| 36 | Skoda | 32 | 2.56 |
| 12 | Fiat | 27 | 2.16 |
| 35 | Seat | 27 | 2.16 |
| 40 | Suzuki | 26 | 2.08 |
| 25 | Mazda | 23 | 1.84 |
| 28 | Mitsubishi | 18 | 1.44 |
| 6 | Chrysler | 16 | 1.28 |
| 8 | Dacia | 14 | 1.12 |
| 27 | MINI | 14 | 1.12 |
| 1 | Alfa Romeo | 12 | 0.96 |
| 5 | Chevrolet | 12 | 0.96 |
| 18 | Jeep | 11 | 0.88 |
| 39 | Subaru | 10 | 0.80 |
| 32 | Porsche | 6 | 0.48 |
| 34 | Saab | 5 | 0.40 |
| 10 | Dodge | 3 | 0.24 |
| 16 | Infiniti | 3 | 0.24 |
| 23 | Land Rover | 3 | 0.24 |
| 24 | Lexus | 3 | 0.24 |
| 4 | Cadillac | 2 | 0.16 |
| 9 | Daihatsu | 2 | 0.16 |
| 17 | Jaguar | 2 | 0.16 |
| 22 | Lancia | 2 | 0.16 |
| 11 | Ferrari | 1 | 0.08 |
| 20 | Lada | 1 | 0.08 |
| 21 | Lamborghini | 1 | 0.08 |
| 37 | Smart | 1 | 0.08 |
| 38 | SsangYong | 1 | 0.08 |
library(plotly)
##
## Dołączanie pakietu: 'plotly'
## Następujący obiekt został zakryty z 'package:ggplot2':
##
## last_plot
## Następujący obiekt został zakryty z 'package:rio':
##
## export
## Następujący obiekt został zakryty z 'package:stats':
##
## filter
## Następujący obiekt został zakryty z 'package:graphics':
##
## layout
obiekt <- ggplot(autka_Marki, aes(x=Liczba_aut,y=Marka_pojazdu, fill=Marka_pojazdu)) +
geom_bar(stat="identity")
ggplotly(obiekt)
Najpopularniejszymi markami samochodów wystawianymi na sprzedarz w okolicach Lublina to:
BMW 8.65%
Audi 7.69%
Volvo 6.81
Analizować będziemy tylko 10 najpopularniejszych marek ( z powyższego zestawienia ). Będą to:
top10 <- head(autka_Marki_sort[,1],n=10)
autka_Model <- autka_dt[autka_dt$Marka_pojazdu==top10[1],]|>
count(Model_pojazdu) |>
data.frame()
colnames(autka_Model)[2] <- "Liczba_aut"
autka_Model_sort <- autka_Model[order(autka_Model$Liczba_aut, decreasing=T), ]
autka_Model_sort_procent <- round((autka_Model_sort$Liczba_aut*100)/sum(autka_Model$Liczba_aut),2)
cbind(autka_Model_sort,autka_Model_sort_procent)|>
kable(caption = paste("Liczba aut poszczególnych modeli marki",top10[1],"(malejąco)",sep=" "),
col.names = c("Model","liczba aut","% "))
| Model | liczba aut | % | |
|---|---|---|---|
| 4 | Seria 3 | 29 | 26.85 |
| 6 | Seria 5 | 24 | 22.22 |
| 12 | X3 | 13 | 12.04 |
| 2 | Seria 1 | 7 | 6.48 |
| 14 | X5 | 7 | 6.48 |
| 8 | Seria 7 | 6 | 5.56 |
| 10 | X1 | 5 | 4.63 |
| 3 | Seria 2 | 3 | 2.78 |
| 13 | X4 | 3 | 2.78 |
| 5 | Seria 4 | 2 | 1.85 |
| 11 | X2 | 2 | 1.85 |
| 15 | X5 M | 2 | 1.85 |
| 16 | X6 | 2 | 1.85 |
| 1 | 3GT | 1 | 0.93 |
| 7 | Seria 6 | 1 | 0.93 |
| 9 | Seria 8 | 1 | 0.93 |
obiekt <- ggplot(autka_Model, aes(x =Liczba_aut,y=Model_pojazdu, fill=Model_pojazdu)) +
geom_bar(stat="identity")
ggplotly(obiekt)
autka_Model2 <- autka_dt[autka_dt$Marka_pojazdu==top10[2],]|>
count(Model_pojazdu) |>
data.frame()
colnames(autka_Model2)[2] <- "Liczba_aut"
autka_Model_sort2 <- autka_Model2[order(autka_Model2$Liczba_aut, decreasing=T), ]
autka_Model_sort_procent2 <- round((autka_Model_sort2$Liczba_aut*100)/sum(autka_Model2$Liczba_aut),2)
cbind(autka_Model_sort2,autka_Model_sort_procent2)|>
kable(caption = paste("Liczba aut poszczególnych modeli marki",top10[2],"(malejąco)",sep=" "),
col.names = c("Model","liczba aut","% "))
| Model | liczba aut | % | |
|---|---|---|---|
| 4 | A4 | 30 | 31.25 |
| 6 | A6 | 16 | 16.67 |
| 3 | A3 | 15 | 15.62 |
| 11 | Q5 | 7 | 7.29 |
| 9 | A8 | 6 | 6.25 |
| 12 | Q7 | 6 | 6.25 |
| 5 | A5 | 4 | 4.17 |
| 10 | Q3 | 3 | 3.12 |
| 2 | A1 | 2 | 2.08 |
| 8 | A7 | 2 | 2.08 |
| 1 | 80 | 1 | 1.04 |
| 7 | A6 Allroad | 1 | 1.04 |
| 13 | Q8 | 1 | 1.04 |
| 14 | S3 | 1 | 1.04 |
| 15 | TT | 1 | 1.04 |
obiekt <- ggplot(autka_Model2, aes(x =Liczba_aut,y=Model_pojazdu, fill=Model_pojazdu)) +
geom_bar(stat="identity")
ggplotly(obiekt)
autka_Model3 <- autka_dt[autka_dt$Marka_pojazdu==top10[3],]|>
count(Model_pojazdu) |>
data.frame()
colnames(autka_Model3)[2] <- "Liczba_aut"
autka_Model_sort <- autka_Model3[order(autka_Model3$Liczba_aut, decreasing=T), ]
autka_Model_sort_procent <- round((autka_Model_sort$Liczba_aut*100)/sum(autka_Model3$Liczba_aut),2)
cbind(autka_Model_sort,autka_Model_sort_procent)|>
kable(caption = paste("Liczba aut poszczególnych modeli marki",top10[3],"(malejąco)",sep=" "),
col.names = c("Model","liczba aut","% "))
| Model | liczba aut | % | |
|---|---|---|---|
| 12 | XC 60 | 18 | 21.18 |
| 7 | V50 | 13 | 15.29 |
| 6 | V40 | 11 | 12.94 |
| 3 | S60 | 9 | 10.59 |
| 8 | V60 | 7 | 8.24 |
| 14 | XC 90 | 7 | 8.24 |
| 9 | V70 | 5 | 5.88 |
| 4 | S80 | 4 | 4.71 |
| 11 | XC 40 | 4 | 4.71 |
| 1 | C30 | 2 | 2.35 |
| 2 | S40 | 2 | 2.35 |
| 5 | Seria 900 | 1 | 1.18 |
| 10 | V90 Cross Country | 1 | 1.18 |
| 13 | XC 70 | 1 | 1.18 |
obiekt <- ggplot(autka_Model3, aes(x =Liczba_aut,y=Model_pojazdu, fill=Model_pojazdu)) +
geom_bar(stat="identity")
obiekt|>ggplotly()
autka_Model4 <- autka_dt[autka_dt$Marka_pojazdu==top10[4],]|>
count(Model_pojazdu) |>
data.frame()
colnames(autka_Model4)[2] <- "Liczba_aut"
autka_Model_sort <- autka_Model4[order(autka_Model4$Liczba_aut, decreasing=T), ]
autka_Model_sort_procent <- round((autka_Model_sort$Liczba_aut*100)/sum(autka_Model4$Liczba_aut),2)
cbind(autka_Model_sort,autka_Model_sort_procent)|>
kable(caption = paste("Liczba aut poszczególnych modeli marki",top10[4],"(malejąco)",sep=" "),
col.names = c("Model","liczba aut","% "))
| Model | liczba aut | % | |
|---|---|---|---|
| 9 | Passat | 22 | 27.16 |
| 4 | Golf | 19 | 23.46 |
| 14 | Tiguan | 11 | 13.58 |
| 10 | Polo | 8 | 9.88 |
| 5 | Golf Plus | 3 | 3.70 |
| 16 | Touran | 3 | 3.70 |
| 7 | Jetta | 2 | 2.47 |
| 8 | New Beetle | 2 | 2.47 |
| 12 | Sharan | 2 | 2.47 |
| 13 | T-Roc | 2 | 2.47 |
| 1 | Arteon | 1 | 1.23 |
| 2 | Crafter | 1 | 1.23 |
| 3 | Garbus | 1 | 1.23 |
| 6 | Golf Sportsvan | 1 | 1.23 |
| 11 | Scirocco | 1 | 1.23 |
| 15 | Touareg | 1 | 1.23 |
| 17 | Transporter | 1 | 1.23 |
obiekt <- ggplot(autka_Model4, aes(x =Liczba_aut,y=Model_pojazdu, fill=Model_pojazdu)) +
geom_bar(stat="identity")
obiekt|>ggplotly()
autka_Model5 <- autka_dt[autka_dt$Marka_pojazdu==top10[5],]|>
count(Model_pojazdu) |>
data.frame()
colnames(autka_Model5)[2] <- "Liczba_aut"
autka_Model_sort <- autka_Model5[order(autka_Model5$Liczba_aut, decreasing=T), ]
autka_Model_sort_procent <- round((autka_Model_sort$Liczba_aut*100)/sum(autka_Model5$Liczba_aut),2)
cbind(autka_Model_sort,autka_Model_sort_procent)|>
kable(caption = paste("Liczba aut poszczególnych modeli marki",top10[5],"(malejąco)",sep=" "),
col.names = c("Model","liczba aut","% "))
| Model | liczba aut | % | |
|---|---|---|---|
| 3 | Astra | 19 | 23.75 |
| 9 | Insignia | 15 | 18.75 |
| 5 | Corsa | 12 | 15.00 |
| 10 | Meriva | 7 | 8.75 |
| 14 | Vectra | 6 | 7.50 |
| 16 | Zafira | 6 | 7.50 |
| 11 | Mokka | 5 | 6.25 |
| 6 | Crossland X | 2 | 2.50 |
| 1 | Adam | 1 | 1.25 |
| 2 | Antara | 1 | 1.25 |
| 4 | Combo | 1 | 1.25 |
| 7 | Grandland | 1 | 1.25 |
| 8 | Grandland X | 1 | 1.25 |
| 12 | Signum | 1 | 1.25 |
| 13 | Tigra | 1 | 1.25 |
| 15 | Vivaro | 1 | 1.25 |
obiekt <- ggplot(autka_Model5, aes(x =Liczba_aut,y=Model_pojazdu, fill=Model_pojazdu)) +
geom_bar(stat="identity")
obiekt|>ggplotly()
autka_nadwozie <- autka|>
count(Typ_nadwozia) |>
data.frame()
colnames(autka_nadwozie)[2] <- "Liczba_aut"
autka_nadwozie_sort <- autka_nadwozie[order(autka_nadwozie$Liczba_aut, decreasing=T), ]
autka_nadwozie_sort_procent <- round((autka_nadwozie_sort$Liczba_aut*100)/sum(autka_nadwozie$Liczba_aut),2)
cbind(autka_nadwozie_sort,autka_nadwozie_sort_procent)|>
kable(caption = paste("Typ nadwozia","(malejąco)",sep=" "),
col.names = c("Typ nadwozia","liczba aut","% "))
| Typ nadwozia | liczba aut | % | |
|---|---|---|---|
| 8 | SUV | 312 | 25.00 |
| 5 | Kombi | 243 | 19.47 |
| 9 | Sedan | 200 | 16.03 |
| 6 | Kompakt | 193 | 15.46 |
| 7 | Minivan | 125 | 10.02 |
| 2 | Auta miejskie | 110 | 8.81 |
| 3 | Coupe | 35 | 2.80 |
| 1 | Auta małe | 20 | 1.60 |
| 4 | Kabriolet | 10 | 0.80 |
obiekt <-ggplot(autka_nadwozie,aes(x=Liczba_aut,y=Typ_nadwozia,fill=Typ_nadwozia)) +
geom_bar(stat="identity")
obiekt|>ggplotly()
Najpopularniejszym typem nadwozia okazał się SUV.
Ludzie jeżdżą samochodami typu SUV, ponieważ są one bardziej wytrzymałe i mają lepszą przyczepność w trudnych warunkach. SUV-y mają również większą przestrzeń wewnątrz, co oznacza, że są one bardziej funkcjonalne dla rodzin i osób, które potrzebują dużej ilości miejsca do przewożenia przedmiotów. Są również bardziej wygodne i bezpieczne, ponieważ mają wyższe siedzenia i wyższy próg, co zapewnia lepszą widoczność i stabilność.
autka_paliwo <- autka|>
count(Rodzaj_paliwa) |>
data.frame()
colnames(autka_paliwo)[2] <- "Liczba_aut"
autka_paliwo_sort <- autka_paliwo[order(autka_paliwo$Liczba_aut, decreasing=T), ]
autka_paliwo_sort_procent <- round((autka_paliwo_sort$Liczba_aut*100)/sum(autka_paliwo$Liczba_aut),2)
cbind(autka_paliwo_sort,autka_paliwo_sort_procent)|>
kable(caption = paste("Rodzaj paliwa","(malejąco)",sep=" "),
col.names = c("Rodzaj paliwa","liczba aut","% "))
| Rodzaj paliwa | liczba aut | % | |
|---|---|---|---|
| 1 | Benzyna | 572 | 45.83 |
| 3 | Diesel | 544 | 43.59 |
| 2 | Benzyna+LPG | 97 | 7.77 |
| 5 | Hybryda | 32 | 2.56 |
| 4 | Elektryczny | 3 | 0.24 |
obiekt <-ggplot(autka_paliwo,aes(y=Liczba_aut,x=Rodzaj_paliwa,fill=Rodzaj_paliwa)) +
geom_bar(stat="identity")
obiekt|>ggplotly()
Widzimy, że zdecydowaną większością są samochody napędzane benzyną. Ma ona wiele zalet, w tym wyższą sprawność niż inne paliwa, a także łatwość użytkowania. Jest także bardziej przystępna cenowo niż inne paliwa, co czyni ją bardziej opłacalnym dla wielu kierowców. Niestety, benzyna ma też swoje wady, w tym wyższe emisje spalin i krótszy czas pracy niż inne paliwa. Związane jest to ze spalaniem benzyny, która jest bardziej skomplikowana i wymaga większej ilości energii, aby została spalona w porównaniu do innych.
Silniki napędzane ropą mają zazwyczaj większą moc niż te napędzane innymi paliwami. Oznacza to, że samochody napędzane ropą są lepsze do jazdy po autostradzie i pozwalają uzyskać wyższą prędkość maksymalną. Silniki napędzane ropą mają zazwyczaj wyższą wydajność niż silniki napędzane innymi paliwami. Oznacza to, że samochody napędzane ropą są bardziej ekonomiczne w zużyciu paliwa, dzięki czemu użytkownicy mogą zaoszczędzić na kosztach paliwa. Ogromną zaletą jest również długa żywotność silnika, dlatego właśnie są one tak popularne.
Jest on znacznie bardziej ekologiczny niż benzyna lub olej napędowy, ale jest również trudniejszy w instalacji. Wymaga on budowy stacji do tankowania gazu, w których należy również przechowywać go w bezpieczny sposób. Ponadto samochody napędzane gazem ziemnym są droższe w produkcji niż samochody napędzane tradycyjnymi paliwami, co sprawia, że producenci samochodów niechętnie sięgają po te technologie.
Hybrydy są relatywnie nowymi pojazdami na drogach, a ich popularność stale rośnie. Jednak jest to nadal rynek raczkujący, a producenci nadal udoskonalają technologię, aby zapewnić kierowcom najlepsze wrażenia z jazdy. Hybrydy są wyraźnie droższe niż tradycyjne samochody spalinowe, dlatego wielu kierowców może się wahać przy ich zakupie. Wraz z pojawieniem się nowszych technologii hybrydowe, które są coraz bardziej wydajne i wygodne, oczekuje się, że ich popularność będzie dalej rosnąć. Dlaczego jest ich tak mało? - Wysoka cena. Hybrydy są zazwyczaj droższe od tradycyjnych samochodów spalinowych. - Trudność w utrzymaniu. Hybrydy są zazwyczaj trudniejsze w utrzymaniu niż tradycyjne samochody spalinowe, ponieważ wymagają specjalnych części i narzędzi do serwisowania. Ograniczony zasięg. Hybrydy zazwyczaj mają ograniczony zasięg, ponieważ akumulatory szybko się wyczerpują.
Najmniej jest samochodów elektrycznych (3 modele). Samochody elektryczne są wciąż na wczesnym etapie rozwoju i ich popularność jest ograniczona. Głównymi przyczynamisą niska dostępność, wysokie koszty zakupu, ograniczone możliwości ładowania, krótki zasięg i brak infrastruktury ładowania. W wielu krajach nie ma dostatecznego poziomu inwestycji w infrastrukturę do ładowania, a samochody elektryczne są obciążone wysokimi podatkami. W wielu krajach wciąż brakuje odpowiednich środków pomocy publicznej na zakup samochodów elektrycznych, co ogranicza dostępność tych pojazdów. Dodatkową przyczyną małej ilości samochodów, jest to, że nasza baza składa się w większości z samochodów będących eksploatowacnych przez przynajmniej jednego właściciela.
autka_kolor <- autka|>
count(Kolor) |>
data.frame()
colnames(autka_kolor)[2] <- "Liczba_aut"
autka_kolor_sort <- autka_kolor[order(autka_kolor$Liczba_aut, decreasing=T), ]
autka_kolor_sort_procent <- round((autka_kolor_sort$Liczba_aut*100)/sum(autka_kolor$Liczba_aut),2)
cbind(autka_kolor_sort,autka_kolor_sort_procent)|>
kable(caption = paste("Kolory samochodów","(malejąco)",sep=" "),
col.names = c("Kolor","liczba aut","% "))
| Kolor | liczba aut | % | |
|---|---|---|---|
| 6 | Czarny | 301 | 24.12 |
| 14 | Szary | 203 | 16.27 |
| 13 | Srebrny | 181 | 14.50 |
| 2 | Biały | 169 | 13.54 |
| 11 | Niebieski | 86 | 6.89 |
| 9 | Granatowy | 54 | 4.33 |
| 10 | Inny kolor | 52 | 4.17 |
| 7 | Czerwony | 51 | 4.09 |
| 4 | Brązowy | 38 | 3.04 |
| 15 | Zielony | 25 | 2.00 |
| 1 | Beżowy | 22 | 1.76 |
| 16 | Złoty | 22 | 1.76 |
| 3 | Bordowy | 19 | 1.52 |
| 5 | Błękitny | 8 | 0.64 |
| 12 | Pomarańczowy | 7 | 0.56 |
| 17 | Żółty | 7 | 0.56 |
| 8 | Fioletowy | 3 | 0.24 |
obiekt <-ggplot(autka_kolor,aes(x=Liczba_aut,y=Kolor,fill=Kolor)) +
geom_bar(stat="identity", fill=c("beige", "white","darkred",
"brown","lightblue","black",
"red","purple","darkblue",
"#00A693","blue", "orange",
"aliceblue","grey","green",
"gold","yellow"),
colour="black")
obiekt|>ggplotly()
To, jaki kolor samochodu wybiera kupujący jest wyborem subiektywnym, są jednak pewne przesłanki, dlaczego ludzie pewne kolory wybierają cześciej od pozostałych:
Czarny kolor samochodu osobowego jest zazwyczaj wybierany ze względu na jego wszechstronność i uniwersalność. Jest on jednym z najbardziej popularnych kolorów samochodów osobowych, ponieważ łatwo dopasowuje się do innych kolorów, wygląda elegancko i jest łatwy w czyszczeniu. Ponadto uważany jest za symbol luksusu i statusu.
Szary kolor samochodu osobowego jest popularny, ponieważ jest uniwersalny. Nie jest ani zbyt jasny ani zbyt ciemny, dzięki czemu pasuje do wielu stylów wystroju wnętrz. Jest również znacznie łatwiejszy do utrzymania w czystości niż inne jasne kolory. Dodatkowo, może on pomóc w zmniejszeniu temperatury wewnątrz kabiny, dzięki czemu pojazd jest bardziej komfortowy.
Srebrny podobnie jak szary kolor jest popularny, ponieważ jest bardzo uniwersalny i pasuje do wielu różnych typów samochodów. Jest również łatwy w utrzymaniu, ponieważ nie ma potrzeby częstego polerowania i zabezpieczania.
Białe samochody są popularne, ponieważ są zazwyczaj bardziej dostępne w niższych cenach (sprawdzimy czy to prawda) i są łatwiejsze w utrzymaniu w czystości. Ponadto, biały kolor samochodu może pomóc w nadawaniu mu nowoczesnego wyglądu, który może zwiększyć jego wartość. Biały odcień jest również popularny ze względu na jego uniwersalny wygląd, który może pasować do każdego rodzaju otoczenia.
Zastanówmy się jeszcze, dlaczego kolory takie jak pomarańczowy, żółty i filetowy są tak mało popularne? Oto kilka sugestii.
Fioletowe samochody są zazwyczaj wytwarzane z tańszych materiałów, co prowadzi do niższej jakości. Są również bardziej podatne na awarie i korozję, co oznacza większe koszty utrzymania. Ponadto, w porównaniu do nowych samochodów, mają mniej opcji i technologii, które są dostępne w nowych samochodach, przez co są mało atrakcyjne dla kupujących.
Pomarańczowy kolor samochodu jest zwykle uważany za zbyt odważny, zazwyczaj ludzie wolą kupować bardziej tradycyjne kolory, takie jak srebrny, czarny lub biały. Ponadto, kolor pomarańczowy jest trudniejszy do utrzymania w czystości, ponieważ łatwo się brudzi i trudniej go wyczyścić.
Ludzie nie kupują żółtych samochodów, ponieważ uważają, że jest to mało popularny kolor. Żółty jest postrzegany jako niepraktyczny i nieatrakcyjny wybór, ponieważ jest trudny do dopasowania do innych kolorów lub wzorów i może być uważany za zbyt „śmiały” lub „niesmaczny”. Dlatego jest ich tak mało.
autka_liczbowe <- autka_dt[,c(4,5,6,8,11)]
liczbowe <- apply(autka_liczbowe,2,summary)
liczbowe <- rbind(liczbowe,St.dev=apply(autka_liczbowe,2,sd))
rownames(liczbowe) <- c('minimum','kwantyl dolny','mediana','średnia','kwantyl górny','maksimum','odchylenie standardowe')
as.data.frame(liczbowe) |>
kable(caption="Statystyki parametrów typu liczbowego",
digits = 0)
| Rok_produkcji | Przebieg | Pojemność_skokowa | Moc | Cena | |
|---|---|---|---|---|---|
| minimum | 1961 | 0 | 0 | 30 | 1999 |
| kwantyl dolny | 2007 | 102020 | 1560 | 110 | 19700 |
| mediana | 2012 | 176000 | 1896 | 136 | 36900 |
| średnia | 2011 | 172701 | 1933 | 154 | 59409 |
| kwantyl górny | 2016 | 237350 | 1997 | 174 | 63346 |
| maksimum | 2023 | 2230000 | 6208 | 612 | 1626016 |
| odchylenie standardowe | 6 | 114166 | 728 | 74 | 90907 |
as.data.frame(liczbowe[,1]) |>
kable(caption="Rok produkcji",
digits = 0,
col.names = "Rok produkcji")
| Rok produkcji | |
|---|---|
| minimum | 1961 |
| kwantyl dolny | 2007 |
| mediana | 2012 |
| średnia | 2011 |
| kwantyl górny | 2016 |
| maksimum | 2023 |
| odchylenie standardowe | 6 |
hist (autka_liczbowe[,1],
col=c("red", "green"),
xlab="Rok produkcji",
ylab="Częstotliwość",
las =2,
main="Histogram Roku Produkcji aut")
boxplot(autka_dt$Rok_produkcji)
Widzimy, że 50% samochodów zostało wyprodukowanych w latach 2007-2016.
Warością środkową są samochody z 2012 roku.
autka[autka$Rok_produkcji==1961,] |>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1171 | 1171 | Fiat | Inny | 1961 | 79 600 km | 1 295 cm3 | Benzyna | 65 KM | Sedan | Niebieski | 25900 |
Najstarszym samochodem okazał się nr. 1171. Samochód został wyprodukowany 61 lat temu! Na podstawie histogramu wiemy, że naprawdę jest to rzadkie zjawisko. Wiemy, że samochod jest marki “FIAT”, niestety sprzedający nie podał konkretnego modelu auta. Wiemy jedynie, że jest marki FIAT. Po przeszukaniu informacji w internecie (link), udało się znaleźć informacje, że firma Fiat w 1961 roku produkowała tylko i wyłącznie poniższe samochody: [zdjecie1] Dodatkowo wiemy, że typ nadwozia to sedan, a więc zwężamy zbiór możliwości do: [zdjecie2] Analizując poszczególne modele, okazuje się że moc silnika naszego auta w porównaniu ze specyfikacjami modeli 1100 oraz 1300 jest za duża, natomiast model 1800/2100 według danych ze strony powinien mieć większą pojemność skokową silnika. Tak więc prawdopodobnie samochód z naszej bazy to właśnie Fiat 1500. Dane z bazy pokrywają się z podaną specyfikacją pojazdu. [zdjecie3]
Aby auto zostało uznane za zabytek, musi spełnić kilka wytycznych, tj.:
ma przynajmniej 30 lat,
jest modelem wycofanym z produkcji przynajmniej 15 lat temu,
jest zbudowane przynajmniej w 75 proc. z oryginalnych części (jeżeli nie spełnia tego warunku, zostanie uznany za replikę oryginalnego modelu).
Wprawdzie zdarza się, że konserwator może wpisać do rejestru samochód, który nie ma 30 lat, ale tylko pod pewnymi warunkami. Jest to możliwe, jeżeli jest to nietypowa konstrukcja. To samo dotyczy szczególnego pochodzenia zastosowanych technologii i rozwiązań. Dlatego, jeżeli masz wyjątkowy pojazd, zwłaszcza należący w przeszłości do ważnej osobowości lub kogoś, kto osiągnął sukces sportowy itp., również możesz zarejestrować go jako samochód zabytkowy.
Sprawdźmy więc, ile samochodów z bazy spełnia pierwszy warunek (produkcja przed 1992 rokiem):
dim(autka[autka$Rok_produkcji[]<=1992,])
## [1] 10 11
autka[autka$Rok_produkcji[]<=1992,] |>
kable( row.names = NA)
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 377 | 377 | Mercedes-Benz | SL | 1986 | 145 000 km | 4 973 cm3 | Benzyna | 326 KM | Kabriolet | Beżowy | 86000 |
| 390 | 390 | Citroën | CX | 1981 | 1 230 000 km | 2 499 cm3 | Benzyna | 137 KM | Sedan | Szary | 9999 |
| 899 | 899 | Ferrari | Testarossa | 1992 | 23 374 km | 4 943 cm3 | Benzyna | 428 KM | Coupe | Czerwony | 1050000 |
| 905 | 905 | Ford | Sierra | 1991 | 110 919 km | 1 998 cm3 | Benzyna | 120 KM | Sedan | Czerwony | 16900 |
| 913 | 913 | BMW | Seria 7 | 1985 | 211 000 km | 2 788 cm3 | Benzyna | 183 KM | Sedan | Zielony | 35000 |
| 938 | 938 | Volvo | Seria 900 | 1992 | 149 500 km | 1 986 cm3 | Benzyna | 190 KM | Sedan | Czarny | 36900 |
| 992 | 992 | Chevrolet | Impala | 1974 | 60 000 km | 5 736 cm3 | Benzyna | 167 KM | Sedan | Niebieski | 64000 |
| 1165 | 1165 | Volkswagen | Garbus | 1985 | 10 000 km | 1 300 cm3 | Benzyna | 30 KM | Kabriolet | Inny kolor | 5500 |
| 1170 | 1170 | Toyota | Tercel | 1979 | 81 804 km | 1 279 cm3 | Benzyna | 65 KM | Auta miejskie | Inny kolor | 15900 |
| 1171 | 1171 | Fiat | Inny | 1961 | 79 600 km | 1 295 cm3 | Benzyna | 65 KM | Sedan | Niebieski | 25900 |
10 samochodów z bazy spełnia pierwszy warunek, aby mogły być uznane za auta zabytkowe.
Średni rok produkcji oraz mediana mają podobne wartości (2011/2012), oznacza to, że średnio oraz najcześciej sprzedawane są 10 letnie samochody.
Kwantyl dolny (2007) oraz górny (2016) infurmują, że 25% wszystkich samochodów została wyprodukowana przed 2007 rokiem, oraz 25% zostało wyprodokowanych po 2016 roku.
Dziwić może maksimum badanego parametru wynoszące 2023. (Dane pochodzą z października 2022)
autka[autka$Rok_produkcji[]==2023,] |>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 613 | 613 | Dacia | Duster | 2023 | 9 km | 999 cm3 | Benzyna+LPG | 100 KM | SUV | Zielony | 86550 |
Dostrzegamy również, że samochód ma już przejechane 9 kilometrów. (czyżby był z przyszłości !? ). Całe to zamieszanie jest spowodowane tym, że salony samochodowe nie przypisują samochodom im dokładnej daty produkcji, a tak naprawdę datę modelową, stąd na koniec każdego roku w salonach dostępna jest opcja kupna samochodu, którego rocznik jest z roku następnego. Jeżeli kupującego interesuje od kiedy samochód jest w użytku, najdokłądniejszą informacje uzyska dzięki wyczytaniu z dowodu rejestracyjnego datę pierwszej rejestracji.
Porównanie roku produkcji poszczególnych marek
autka_dt|>
group_by(Marka_pojazdu) |>
summarise(minimim=min(Rok_produkcji),
średnia=mean(Rok_produkcji),
mediana=median(Rok_produkcji),
maksimum=max(Rok_produkcji)) |>
kable(caption = "Statystyki roku produkcji dla poszczególnych marek ")
| Marka_pojazdu | minimim | średnia | mediana | maksimum |
|---|---|---|---|---|
| Alfa Romeo | 2008 | 2017.333 | 2019.0 | 2022 |
| Audi | 1993 | 2009.781 | 2009.5 | 2022 |
| BMW | 1985 | 2011.398 | 2012.0 | 2022 |
| Cadillac | 2004 | 2006.000 | 2006.0 | 2008 |
| Chevrolet | 1974 | 2006.250 | 2009.0 | 2013 |
| Chrysler | 2004 | 2013.188 | 2014.5 | 2019 |
| Citroën | 1981 | 2011.245 | 2011.0 | 2022 |
| Dacia | 2006 | 2017.500 | 2018.0 | 2023 |
| Daihatsu | 2005 | 2007.500 | 2007.5 | 2010 |
| Dodge | 2013 | 2015.000 | 2015.0 | 2017 |
| Ferrari | 1992 | 1992.000 | 1992.0 | 1992 |
| Fiat | 1961 | 2008.037 | 2008.0 | 2020 |
| Ford | 1991 | 2012.364 | 2012.0 | 2021 |
| Honda | 1998 | 2008.758 | 2008.0 | 2020 |
| Hyundai | 2007 | 2014.917 | 2014.5 | 2022 |
| Infiniti | 2011 | 2014.000 | 2015.0 | 2016 |
| Jaguar | 2014 | 2016.000 | 2016.0 | 2018 |
| Jeep | 1993 | 2007.455 | 2008.0 | 2018 |
| Kia | 2006 | 2015.308 | 2016.0 | 2022 |
| Lada | 1997 | 1997.000 | 1997.0 | 1997 |
| Lamborghini | 2005 | 2005.000 | 2005.0 | 2005 |
| Lancia | 2008 | 2011.000 | 2011.0 | 2014 |
| Land Rover | 1997 | 2001.000 | 1999.0 | 2007 |
| Lexus | 2000 | 2008.333 | 2008.0 | 2017 |
| Mazda | 2001 | 2011.565 | 2012.0 | 2020 |
| Mercedes-Benz | 1986 | 2009.164 | 2009.0 | 2022 |
| MINI | 2002 | 2011.929 | 2011.5 | 2022 |
| Mitsubishi | 2005 | 2010.889 | 2011.5 | 2017 |
| Nissan | 2000 | 2011.000 | 2011.0 | 2018 |
| Opel | 1998 | 2010.987 | 2011.0 | 2022 |
| Peugeot | 2004 | 2011.953 | 2011.0 | 2022 |
| Porsche | 2014 | 2017.833 | 2017.0 | 2022 |
| Renault | 1998 | 2011.925 | 2013.0 | 2022 |
| Saab | 1999 | 2004.800 | 2006.0 | 2008 |
| Seat | 2000 | 2010.185 | 2009.0 | 2020 |
| Skoda | 2001 | 2014.688 | 2016.0 | 2022 |
| Smart | 2016 | 2016.000 | 2016.0 | 2016 |
| SsangYong | 2017 | 2017.000 | 2017.0 | 2017 |
| Subaru | 2003 | 2010.200 | 2008.5 | 2019 |
| Suzuki | 1999 | 2010.269 | 2007.5 | 2022 |
| Toyota | 1979 | 2011.844 | 2012.5 | 2022 |
| Volkswagen | 1985 | 2010.469 | 2011.0 | 2022 |
| Volvo | 1992 | 2011.800 | 2012.0 | 2022 |
as.data.frame(liczbowe[,2]) |>
kable(caption="Przebieg",
col.names = "Przebieg")
| Przebieg | |
|---|---|
| minimum | 0.0 |
| kwantyl dolny | 102019.5 |
| mediana | 176000.0 |
| średnia | 172701.2 |
| kwantyl górny | 237350.0 |
| maksimum | 2230000.0 |
| odchylenie standardowe | 114165.8 |
hist (autka_liczbowe[,2],
col=c("red", "green"),
xlab="Przebieg",
ylab="Częstotliwość",
las =2,
main="Histogram Przebiegu",
breaks = 20)
boxplot(autka_liczbowe[,2])
Na samym początku uwagę przykuwa znacząco odbiegające od wszystkich
obserwacji maksimum
autka[autka$Przebieg=="2 230 000 km",] |>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 430 | 430 | Hyundai | Tucson | 2008 | 2 230 000 km | 1 975 cm3 | Benzyna | 141 KM | SUV | Czarny | 18900 |
(2230000/14)/365
## [1] 436.3992
14 letni samochód prejechał 2 230 000 km. Oznacza to, że średnio jeździł po 93 tys. km w ciągu roku oraz 436.3992172 km na dzień. Jako ciekawostka można dodać, że aby okrążyć ziemię wazdłuż równika, trzeba przejechać około 40 075 km. Nasz samochód mógłby okrążyć ziemię około 56 razy. Jako kolejna ciekawostka dla zwizualizowania jak wielka jest to odległość dodajmy, że odległość z Ziemi na Księżyc wynisi 384 400 km.
Wydaje się to dosyć nierealne i prawdopodobnie sprzedający omyłkowo wpisał o jedno “0” za dużo przy wystawianiu ogłoszenia.
Sprawdzmy srednia samochodów z 2008 roku bez naszej wartości odstającej:
przebieg <- autka_liczbowe[,2]
przebieg <- przebieg[-430]
przebieg[430]
## [1] 320000
median(przebieg)
## [1] 176000
mean(przebieg)
## [1] 171051.4
max(przebieg)
## [1] 1230000
Widzimy, że średnia oraz mediana wynoszą około 173 tys. Przyjmijmy więc opcję, że sprzedający się pomylił i podał dzeisięciokrotność przebiegu auta.
Na wykresie ramka wąsy widzimy jeszcze jedną obserwacje odstającą. Przyjżyjmy się jej dokładniej:
autka[autka$Przebieg=="1 230 000 km",] |>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 390 | 390 | Citroën | CX | 1981 | 1 230 000 km | 2 499 cm3 | Benzyna | 137 KM | Sedan | Szary | 9999 |
W tym przypadku widzimy jednak, że jest to auto 41 letnie, więc średnio jeździło 30 tys km rocznie. Wydaje się to prawdopodobne, dlatego zostawiamy tak jak jest. Zmieniamy tylko i wyłącznie samochód o identyfikatorze 430.
#przebieg to kolumna 5
autka_dt[430,5] <- 223000
autka_liczbowe <- autka_dt[,c(4,5,6,8,11)]
liczbowe <- apply(autka_liczbowe,2,summary)
liczbowe <- rbind(liczbowe,St.dev=apply(autka_liczbowe,2,sd))
rownames(liczbowe) <- c('minimum','kwantyl dolny','mediana','średnia','kwantyl górny','maksimum','odchylenie standardowe')
Wyświetlmy więc statystyki ponownie dla zmionionej obserwacji 430.
as.data.frame(liczbowe[,2]) |>
kable(caption="Przebieg",
col.names = "Przebieg")
| Przebieg | |
|---|---|
| minimum | 0.0 |
| kwantyl dolny | 102019.5 |
| mediana | 176000.0 |
| średnia | 171093.0 |
| kwantyl górny | 237293.2 |
| maksimum | 1230000.0 |
| odchylenie standardowe | 98179.1 |
hist (autka_liczbowe[,2],
col=c("red", "green"),
xlab="Przebieg",
ylab="Częstotliwość",
las =2,
main="Histogram Przebiegu")
boxplot(autka_dt$Przebieg)
Wartośćią środkową jest 176 tys. przejechanych km. Średnio samochody wystawione na sprzedarz przejechały 171 tys kilometrów. 25% samochodów ma przebieg mniejszy niż 102 tys. kilometrów oraz 25% samochodów ma przebieg większy niż 237 tys. kilometrów.
Spróbujmy teraz oszacować, jaki przebieg powinien mieć samochód, zależnie od “wieku”.
autka_dt|>
group_by(Rok_produkcji) |>
summarise(minimim=min(Przebieg),
średnia=mean(Przebieg),
mediana=median(Przebieg),
maksimum=max(Przebieg)) |>
kable(caption = "Statystyki przebiegu zależne od roku produckji")
| Rok_produkcji | minimim | średnia | mediana | maksimum |
|---|---|---|---|---|
| 1961 | 79600 | 79600.000 | 79600.0 | 79600 |
| 1974 | 60000 | 60000.000 | 60000.0 | 60000 |
| 1979 | 81804 | 81804.000 | 81804.0 | 81804 |
| 1981 | 1230000 | 1230000.000 | 1230000.0 | 1230000 |
| 1985 | 10000 | 110500.000 | 110500.0 | 211000 |
| 1986 | 145000 | 145000.000 | 145000.0 | 145000 |
| 1991 | 110919 | 110919.000 | 110919.0 | 110919 |
| 1992 | 23374 | 86437.000 | 86437.0 | 149500 |
| 1993 | 240000 | 390625.000 | 435000.0 | 452500 |
| 1994 | 158287 | 158287.000 | 158287.0 | 158287 |
| 1995 | 282000 | 282000.000 | 282000.0 | 282000 |
| 1997 | 190000 | 283433.429 | 285000.0 | 356100 |
| 1998 | 139000 | 235307.143 | 249250.0 | 346900 |
| 1999 | 131226 | 240360.091 | 240154.0 | 334000 |
| 2000 | 133000 | 314045.286 | 318509.0 | 456696 |
| 2001 | 111403 | 269955.417 | 257381.0 | 431000 |
| 2002 | 48745 | 238826.421 | 239985.0 | 424590 |
| 2003 | 77000 | 235796.800 | 234072.0 | 520000 |
| 2004 | 84481 | 237040.825 | 247550.0 | 369400 |
| 2005 | 46950 | 239112.667 | 241000.0 | 435000 |
| 2006 | 66423 | 219111.250 | 216816.0 | 400000 |
| 2007 | 98000 | 237766.260 | 226445.0 | 430000 |
| 2008 | 81000 | 229085.388 | 226000.0 | 379562 |
| 2009 | 95800 | 222805.662 | 224000.0 | 485000 |
| 2010 | 47166 | 210377.514 | 207750.0 | 470000 |
| 2011 | 84500 | 204057.301 | 209000.0 | 305000 |
| 2012 | 26326 | 186180.606 | 190000.0 | 371893 |
| 2013 | 25029 | 171900.600 | 177000.0 | 305000 |
| 2014 | 34745 | 170427.642 | 175000.0 | 330000 |
| 2015 | 33000 | 148359.035 | 142250.0 | 327000 |
| 2016 | 28800 | 118211.819 | 121968.5 | 195000 |
| 2017 | 14489 | 105866.171 | 96500.0 | 293000 |
| 2018 | 12962 | 86597.622 | 81808.0 | 184000 |
| 2019 | 11575 | 74254.833 | 55763.0 | 175000 |
| 2020 | 10600 | 42594.320 | 34000.0 | 220000 |
| 2021 | 924 | 16575.500 | 16750.0 | 41215 |
| 2022 | 0 | 2449.318 | 5.0 | 29000 |
| 2023 | 9 | 9.000 | 9.0 | 9 |
Aby było to praktyczne, dodajmy warunek, że szukamy aut do użytku, ale nienowego, czyli bierzmy pod uwagę auta z roczników 2002-2020 (młodsze niż 20 lat ale starsze niż dwuletnie).
#auta z roczników 2002-2020
autka_dt2 <- autka_dt[autka_dt$Rok_produkcji<=2020 &autka_dt$Rok_produkcji>=2002,]
autka_dt2[,"Rok_produkcji"] <- 2022-autka_dt2[,"Rok_produkcji"]
colnames(autka_dt2)[4] <- "Wiek"
autka_dt2|>
group_by(Wiek) |>
summarise(średnia=mean(Przebieg),
mediana=median(Przebieg),
odchylenie_standardowe=sd(Przebieg))|>
kable(caption = "Statystyki przebiegu zależne od wieku samochodu",
digits = 0,
align="c")
| Wiek | średnia | mediana | odchylenie_standardowe |
|---|---|---|---|
| 2 | 42594 | 34000 | 42606 |
| 3 | 74255 | 55763 | 45284 |
| 4 | 86598 | 81808 | 44610 |
| 5 | 105866 | 96500 | 56227 |
| 6 | 118212 | 121968 | 43320 |
| 7 | 148359 | 142250 | 70773 |
| 8 | 170428 | 175000 | 60167 |
| 9 | 171901 | 177000 | 56217 |
| 10 | 186181 | 190000 | 65797 |
| 11 | 204057 | 209000 | 52528 |
| 12 | 210378 | 207750 | 66153 |
| 13 | 222806 | 224000 | 67686 |
| 14 | 229085 | 226000 | 58672 |
| 15 | 237766 | 226445 | 68998 |
| 16 | 219111 | 216816 | 67373 |
| 17 | 239113 | 241000 | 64953 |
| 18 | 237041 | 247550 | 65047 |
| 19 | 235797 | 234072 | 86916 |
| 20 | 238826 | 239985 | 79513 |
Przy pomocy tego oszacowania kupujący auto może zorientować się, jaki przebieg powienien mieć samochód w zależności od wieku. Zdarzają się niestety niegodziwcy, którzy “cofają” wskaźnik licznika aby sztucznie zwiększyć wartość auta. Dzięki powyższemu zestawieniu kupującemu łatwiej jest wykryć oszustwo.
Zbudujmy dodatkowo model liniowy zależności przebieku od wieku auta:
library(stats)
hist(autka_dt2$Przebieg)
md_przebieg <- lm(Przebieg~Wiek,autka_dt2)
summary(md_przebieg)
##
## Call:
## lm(formula = Przebieg ~ Wiek, data = autka_dt2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -236967 -41700 -3018 37635 278635
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 59005.8 4614.9 12.79 <2e-16 ***
## Wiek 11335.3 399.2 28.39 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 62860 on 1103 degrees of freedom
## Multiple R-squared: 0.4223, Adjusted R-squared: 0.4217
## F-statistic: 806.2 on 1 and 1103 DF, p-value: < 2.2e-16
library(lmtest)
## Ładowanie wymaganego pakietu: zoo
##
## Dołączanie pakietu: 'zoo'
## Następujące obiekty zostały zakryte z 'package:base':
##
## as.Date, as.Date.numeric
plot(md_przebieg)
lmtest::raintest(md_przebieg)
##
## Rainbow test
##
## data: md_przebieg
## Rain = 0.92444, df1 = 553, df2 = 550, p-value = 0.8218
cor.test(autka_dt2$Przebieg,autka_dt2$Wiek)
##
## Pearson's product-moment correlation
##
## data: autka_dt2$Przebieg and autka_dt2$Wiek
## t = 28.394, df = 1103, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.6143971 0.6826379
## sample estimates:
## cor
## 0.6498251
ggplot(aes(y=Przebieg,x=Wiek),data=autka_dt2)+
geom_point()+
geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'
Wniosek: Na podstawie modelu możęmy wnioskować, że w ciągu jednego roku samochód przejeżdża średnio 11 tys. km +/- 400km. Jednakże powyższe zestawienie oraz wykres dopasowania wskazują, że błąd jest zaniżony. Duża zmienność przebiegu uniemożliwia nam dokładniejsze oszacowania.
Dodatkowo patrząc na wartości odchyleń standardowych z tabeli dla poszczególnego wieku wyciągamy kolejne wnioski:
Odchylenie standardowe młodszych aut ( wiek:1-6 )waha się na poziomie 4000.
Ciekawa zależność pojawia się dla starszych samochodów. Występuje tu pewien “przeskok” i wartość oschylenia standardowego starszych roczników zaczyna oscylować wokół 6000.
Oczywiście jest to tylko wskazówka, a nie dowód. Na postawie analizy przebiegu kupujący ma przesłanki do tego, aby zapyać sprzedającego o szczegóły auta, które mogą wpływać na przebieg. np. cel użytku samochodu przez byłego właściciela.
as.data.frame(liczbowe[,3]) |>
kable(caption="Pojemność skokowa",
digits = 0,
col.names = "Pojemność skokowa")
| Pojemność skokowa | |
|---|---|
| minimum | 0 |
| kwantyl dolny | 1560 |
| mediana | 1896 |
| średnia | 1933 |
| kwantyl górny | 1997 |
| maksimum | 6208 |
| odchylenie standardowe | 728 |
hist (autka_liczbowe[,3],
col=c("red", "green"),
xlab="moc",
ylab="Częstotliwość",
las =2,
main="Histogram Pojemności skokowej aut")
boxplot(autka_dt$Pojemność_skokowa)
Statystyki mogą być nieco zaburzone ze względu na ustawione przez nas
wartości zerowe w przypadku samochodów elektrycznych. Podczas
analizowania pojemności skokowej, rozważmy więc wyłącznie samochody,
które nimi nie są.
autka_dt3 <- autka_dt[-c(585,1000,1001),]
#liczbowe2 - bez elektrycznych
autka_liczbowe2 <- autka_dt3[,c(4,5,6,8,11)]
liczbowe2 <- apply(autka_liczbowe2,2,summary)
liczbowe2 <- rbind(liczbowe2,St.dev=apply(autka_liczbowe2,2,sd))
rownames(liczbowe2) <- c('minimum','kwantyl dolny','mediana','średnia','kwantyl górny','maksimum','odchylenie standardowe')
as.data.frame(liczbowe2[,3]) |>
kable(caption="Pojemność skokowa",
digits = 0,
col.names = "Pojemność skokowa")
| Pojemność skokowa | |
|---|---|
| minimum | 875 |
| kwantyl dolny | 1560 |
| mediana | 1896 |
| średnia | 1938 |
| kwantyl górny | 1997 |
| maksimum | 6208 |
| odchylenie standardowe | 723 |
hist (autka_liczbowe2[,3],
col=c("red", "green"),
xlab="Pojemność skokowa",
ylab="Częstotliwość",
las =2,
main="Histogram Roku Produkcji aut")
boxplot(autka_dt3$Pojemność_skokowa)
Największa pojemność skokowa silnika wynosi: 6208. Owy silnik posiada
poniższy samochód:
autka_dt[autka_dt$Pojemność_skokowa==max(autka_dt$Pojemność_skokowa),]
## id Marka_pojazdu Model_pojazdu Rok_produkcji Przebieg Pojemność_skokowa
## 1201 1201 Mercedes-Benz Klasa C 2013 75543 6208
## Rodzaj_paliwa Moc Typ_nadwozia Kolor Cena
## 1201 Benzyna 507 Sedan Biały 365853
Natomiast najmniejszy to: 875.
autka_dt3[autka_dt3$Pojemność_skokowa==min(autka_dt3$Pojemność_skokowa),]
## id Marka_pojazdu Model_pojazdu Rok_produkcji Przebieg Pojemność_skokowa
## 790 790 Fiat 500 2015 33583 875
## Rodzaj_paliwa Moc Typ_nadwozia Kolor Cena
## 790 Benzyna 86 Kompakt Czarny 35000
Średnio samochody mają pojemność 1.9.
Silnik 1,9 o pojemności (TDI) jest powszechnie uznawany za jeden z najlepszych, ponieważ jest wyjątkowo ekonomiczny, ma wysoką wydajność i moc, a jednocześnie cechuje go niski poziom emisji spalin. To wszystko sprawia, że jest bardzo popularny wśród kierowców, którzy korzystają z niego do samochodów osobowych i dostawczych. Dzięki swojej pojemności skokowej silnik 1,9 oferuje wystarczającą moc i wydajność w zakresie zużycia paliwa i emisji spalin. Dodatkowo jest on bardzo trwały i niezawodny, a jego konserwacja jest prosta i niedroga.
Podobnie jak w poprzednim przypadku, samochody elektryczne nie będą brane pod uwagę w analizie.
as.data.frame(liczbowe2[,4]) |>
kable(caption="Moc silnika",
digits = 0,
col.names = "Moc silnika")
| Moc silnika | |
|---|---|
| minimum | 30 |
| kwantyl dolny | 110 |
| mediana | 136 |
| średnia | 153 |
| kwantyl górny | 174 |
| maksimum | 612 |
| odchylenie standardowe | 73 |
hist (autka_liczbowe2[,4],
col=c("red", "green"),
xlab="Moc silnika",
ylab="Częstotliwość",
las =2,
main="Histogram Mocy silnika")
boxplot(autka_dt3$Moc)
Samochód z najwyższą mocą:
autka_dt3[autka_dt3$Moc==max(autka_dt3$Moc),]
## id Marka_pojazdu Model_pojazdu Rok_produkcji Przebieg Pojemność_skokowa
## 900 900 Mercedes-Benz CL 2004 84481 5980
## Rodzaj_paliwa Moc Typ_nadwozia Kolor Cena
## 900 Benzyna 612 Coupe Czarny 2e+05
Samochód z najniższą mocą:
autka_dt3[autka_dt3$Moc==min(autka_dt3$Moc),]
## id Marka_pojazdu Model_pojazdu Rok_produkcji Przebieg Pojemność_skokowa
## 1165 1165 Volkswagen Garbus 1985 10000 1300
## Rodzaj_paliwa Moc Typ_nadwozia Kolor Cena
## 1165 Benzyna 30 Kabriolet Inny kolor 5500
Średnia moc: 153KM.
as.data.frame(liczbowe[,5]) |>
kable(caption="Cena auts",
digits = 0,
col.names = "Cena auta")
| Cena auta | |
|---|---|
| minimum | 1999 |
| kwantyl dolny | 19700 |
| mediana | 36900 |
| średnia | 59409 |
| kwantyl górny | 63346 |
| maksimum | 1626016 |
| odchylenie standardowe | 90907 |
hist (autka_liczbowe[,5],
col=c("red", "green"),
xlab="Cena",
ylab="Częstotliwość",
las =2,
main="Histogram Ceny aut",
breaks = 50)
boxplot(autka_dt$Cena)
Na podstawie histogramu widzimy , że rozkład Ceny ma rozkład o prawostronnej asymetrii. Większość wyników oscyluje w okolicach 37 tys. zł.
Zestawienie najdroższych samochodów:
#najwiekszy
autka_dt4 <-autka_dt[autka_dt$Cena>=500000,]
#sortowanie po cenie auta
autka_dt4 <- autka_dt4[ order(autka_dt4$Cena, decreasing=T), ]
autka_dt4 |>
kable()
| id | Marka_pojazdu | Model_pojazdu | Rok_produkcji | Przebieg | Pojemność_skokowa | Rodzaj_paliwa | Moc | Typ_nadwozia | Kolor | Cena | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1024 | 1024 | Lamborghini | Murcielago | 2005 | 46950 | 6193 | Benzyna | 580 | Coupe | Biały | 1626016 |
| 851 | 851 | Porsche | 911 | 2022 | 405 | 3996 | Benzyna | 510 | Coupe | Czarny | 1097560 |
| 899 | 899 | Ferrari | Testarossa | 1992 | 23374 | 4943 | Benzyna | 428 | Coupe | Czerwony | 1050000 |
| 1001 | 1001 | Mercedes-Benz | EQS | 2022 | 0 | 0 | Elektryczny | 523 | Kompakt | Czarny | 783564 |
| 1224 | 1224 | BMW | Seria 8 | 2021 | 15000 | 4395 | Benzyna | 530 | Coupe | Szary | 579900 |
| 1004 | 1004 | Audi | A8 | 2022 | 5 | 2967 | Diesel | 286 | Sedan | Czarny | 533856 |
| 340 | 340 | Porsche | 718 Cayman | 2021 | 27700 | 3995 | Benzyna | 400 | Coupe | Żółty | 532000 |
Najtańszy samochód:
autka_dt[autka_dt$Cena==min(autka_dt$Cena),]
## id Marka_pojazdu Model_pojazdu Rok_produkcji Przebieg Pojemność_skokowa
## 159 159 Honda Civic 1998 289000 1396
## Rodzaj_paliwa Moc Typ_nadwozia Kolor Cena
## 159 Benzyna 75 Kompakt Granatowy 1999